Three-dimensional images (3D) can be rendered on an electronic display using two steps. The first step is for transforming a desired graphical state to pixel coordinates. The second step is for drawing lines connecting the coordinates and for filling a geometric structure represented by the connected coordinates with pixel data (attributes). A graphical state is a desired image that is to be rendered on the electronic display.
During the transformation step, two-dimensional (2D) space projected polygons are produced. Moreover, light source parameters are applied for producing vertex colors. These colors are typically stored in Red, Green, and Blue (RGB) formats.
The second step uses a rasterizer (application) for drawing and filling polygons within regions of the electronic display. The rasterizer takes 2D polygon and 2D vertex attributes as parameters. The attributes can include 2D position, depth dimension (Z), RGB vertex color (from a computation or manual input), 2D texture coordinates, and optionally a vertex alpha value. This alpha value is generally an 8 bit quantity stored with color values RGB for aligning to 32 bits.
Conventionally, rasterizers are embodied as large programming libraries or drivers residing on computing devices having sufficiently large storage and memory. This is so, because the number of possible graphical states that may need to be rendered by a rasterizer is very large. Therefore, in order to adequately account for all the possible graphical states of any processing rasterizer a large amount of logic needs to be available to the device that is rendering the graphical state within an electronic display.
However, this is a considerable waste of storage and memory on the device. As a result, a large variety of electronic devices which do not have sufficient storage or memory cannot benefit from robust rasterizer applications. Some of these devices include personal digital assistants (PDAs), cell phones, intelligent appliances, and others. Thus, conventionally these devices have extremely limited graphics capabilities.
Therefore, there is a need for improved implementations and techniques for providing improved rasterizers. These implementations and techniques should be tailored to the devices processing them in order to better use storage and memory, such that devices traditionally not capable of rendering advanced graphics can now enjoy robust imaging capabilities.